package jannex.sql;

import jannex.JannexException;

import java.sql.SQLWarning;

public interface JxStatement extends java.sql.Statement {

    <E> TypedStatement<E> as(Class<E> elementClass) throws JannexException;

    @Override
    JxResultSet getResultSet() throws JannexException;

    @Override
    void close() throws JannexException;

    @Override
    int getMaxFieldSize() throws JannexException;

    @Override
    void setMaxFieldSize(int max) throws JannexException;

    @Override
    int getMaxRows() throws JannexException;

    @Override
    void setMaxRows(int max) throws JannexException;

    @Override
    void setEscapeProcessing(boolean enable) throws JannexException;

    @Override
    int getQueryTimeout() throws JannexException;

    @Override
    void setQueryTimeout(int seconds) throws JannexException;

    @Override
    void cancel() throws JannexException;

    @Override
    SQLWarning getWarnings() throws JannexException;

    @Override
    void clearWarnings() throws JannexException;

    @Override
    void setCursorName(String name) throws JannexException;

    @Override
    int getUpdateCount() throws JannexException;

    @Override
    boolean getMoreResults() throws JannexException;

    @Override
    void setFetchDirection(int direction) throws JannexException;

    @Override
    int getFetchDirection() throws JannexException;

    @Override
    void setFetchSize(int rows) throws JannexException;

    @Override
    int getFetchSize() throws JannexException;

    @Override
    int getResultSetConcurrency() throws JannexException;

    @Override
    int getResultSetType() throws JannexException;

    @Override
    void addBatch(String sql) throws JannexException;

    @Override
    void clearBatch() throws JannexException;

    @Override
    int[] executeBatch() throws JannexException;

    @Override
    JxConnection getConnection() throws JannexException;

    @Override
    boolean getMoreResults(int current) throws JannexException;

    @Override
    JxResultSet getGeneratedKeys() throws JannexException;

    @Override
    JxResultSet executeQuery(String sql) throws JannexException;

    @Override
    int executeUpdate(String sql) throws JannexException;

    @Override
    boolean execute(String sql) throws JannexException;

    @Override
    int executeUpdate(String sql, int autoGeneratedKeys) throws JannexException;

    @Override
    int executeUpdate(String sql, int[] columnIndexes) throws JannexException;

    @Override
    int executeUpdate(String sql, String[] columnNames) throws JannexException;

    @Override
    boolean execute(String sql, int autoGeneratedKeys) throws JannexException;

    @Override
    boolean execute(String sql, int[] columnIndexes) throws JannexException;

    @Override
    boolean execute(String sql, String[] columnNames) throws JannexException;

    @Override
    int getResultSetHoldability() throws JannexException;

    @Override
    boolean isClosed() throws JannexException;

    @Override
    void setPoolable(boolean poolable) throws JannexException;

    @Override
    boolean isPoolable() throws JannexException;

    @Override
    void closeOnCompletion() throws JannexException;

    @Override
    boolean isCloseOnCompletion() throws JannexException;

    @Override
    <T> T unwrap(Class<T> iface) throws JannexException;

    @Override
    boolean isWrapperFor(Class<?> iface) throws JannexException;

}
